<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>CommandVisitor (Apache Commons Collections 4.0 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="CommandVisitor (Apache Commons Collections 4.0 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CommandVisitor.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../../../org/apache/commons/collections4/sequence/DeleteCommand.html" title="class in org.apache.commons.collections4.sequence"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/collections4/sequence/CommandVisitor.html" target="_top">Frames</a></li>
<li><a href="CommandVisitor.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.collections4.sequence</div>
<h2 title="Interface CommandVisitor" class="title">Interface CommandVisitor&lt;T&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../org/apache/commons/collections4/sequence/ReplacementsFinder.html" title="class in org.apache.commons.collections4.sequence">ReplacementsFinder</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">CommandVisitor&lt;T&gt;</span></pre>
<div class="block">This interface should be implemented by user object to walk
 through <a href="../../../../../org/apache/commons/collections4/sequence/EditScript.html" title="class in org.apache.commons.collections4.sequence"><code>EditScript</code></a> objects.
 <p>
 Users should implement this interface in order to walk through
 the <a href="../../../../../org/apache/commons/collections4/sequence/EditScript.html" title="class in org.apache.commons.collections4.sequence"><code>EditScript</code></a> object created by the comparison
 of two sequences. This is a direct application of the visitor
 design pattern. The <a href="../../../../../org/apache/commons/collections4/sequence/EditScript.html#visit(org.apache.commons.collections4.sequence.CommandVisitor)"><code>EditScript.visit</code></a>
 method takes an object implementing this interface as an argument,
 it will perform the loop over all commands in the script and the
 proper methods of the user class will be called as the commands are
 encountered.
 <p>
 The implementation of the user visitor class will depend on the
 need. Here are two examples.
 <p>
 The first example is a visitor that build the longest common
 subsequence:
 <pre>
 import org.apache.commons.collections4.comparators.sequence.CommandVisitor;

 import java.util.ArrayList;

 public class LongestCommonSubSequence implements CommandVisitor {

   public LongestCommonSubSequence() {
     a = new ArrayList();
   }

   public void visitInsertCommand(Object object) {
   }

   public void visitKeepCommand(Object object) {
     a.add(object);
   }

   public void visitDeleteCommand(Object object) {
   }

   public Object[] getSubSequence() {
     return a.toArray();
   }

   private ArrayList a;

 }
 </pre>
 <p>
 The second example is a visitor that shows the commands and the way
 they transform the first sequence into the second one:
 <pre>
 import org.apache.commons.collections4.comparators.sequence.CommandVisitor;

 import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Iterator;

 public class ShowVisitor implements CommandVisitor {

   public ShowVisitor(Object[] sequence1) {
     v = new ArrayList();
     v.addAll(Arrays.asList(sequence1));
     index = 0;
   }

   public void visitInsertCommand(Object object) {
     v.insertElementAt(object, index++);
     display("insert", object);
   }

   public void visitKeepCommand(Object object) {
     ++index;
     display("keep  ", object);
   }

   public void visitDeleteCommand(Object object) {
     v.remove(index);
     display("delete", object);
   }

   private void display(String commandName, Object object) {
     System.out.println(commandName + " " + object + " ->" + this);
   }

   public String toString() {
     StringBuffer buffer = new StringBuffer();
     for (Iterator iter = v.iterator(); iter.hasNext();) {
       buffer.append(' ').append(iter.next());
     }
     return buffer.toString();
   }

   private ArrayList v;
   private int index;

 }
 </pre></div>
<dl><dt><span class="strong">Since:</span></dt>
  <dd>4.0</dd>
<dt><span class="strong">Version:</span></dt>
  <dd>$Id: CommandVisitor.java 1477760 2013-04-30 18:34:03Z tn $</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html#visitDeleteCommand(T)">visitDeleteCommand</a></strong>(<a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html" title="type parameter in CommandVisitor">T</a>&nbsp;object)</code>
<div class="block">Method called when a delete command is encountered.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html#visitInsertCommand(T)">visitInsertCommand</a></strong>(<a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html" title="type parameter in CommandVisitor">T</a>&nbsp;object)</code>
<div class="block">Method called when an insert command is encountered.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html#visitKeepCommand(T)">visitKeepCommand</a></strong>(<a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html" title="type parameter in CommandVisitor">T</a>&nbsp;object)</code>
<div class="block">Method called when a keep command is encountered.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="visitInsertCommand(java.lang.Object)">
<!--   -->
</a><a name="visitInsertCommand(T)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>visitInsertCommand</h4>
<pre>void&nbsp;visitInsertCommand(<a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html" title="type parameter in CommandVisitor">T</a>&nbsp;object)</pre>
<div class="block">Method called when an insert command is encountered.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>object</code> - object to insert (this object comes from the second sequence)</dd></dl>
</li>
</ul>
<a name="visitKeepCommand(java.lang.Object)">
<!--   -->
</a><a name="visitKeepCommand(T)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>visitKeepCommand</h4>
<pre>void&nbsp;visitKeepCommand(<a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html" title="type parameter in CommandVisitor">T</a>&nbsp;object)</pre>
<div class="block">Method called when a keep command is encountered.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>object</code> - object to keep (this object comes from the first sequence)</dd></dl>
</li>
</ul>
<a name="visitDeleteCommand(java.lang.Object)">
<!--   -->
</a><a name="visitDeleteCommand(T)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>visitDeleteCommand</h4>
<pre>void&nbsp;visitDeleteCommand(<a href="../../../../../org/apache/commons/collections4/sequence/CommandVisitor.html" title="type parameter in CommandVisitor">T</a>&nbsp;object)</pre>
<div class="block">Method called when a delete command is encountered.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>object</code> - object to delete (this object comes from the first sequence)</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CommandVisitor.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../../../org/apache/commons/collections4/sequence/DeleteCommand.html" title="class in org.apache.commons.collections4.sequence"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/collections4/sequence/CommandVisitor.html" target="_top">Frames</a></li>
<li><a href="CommandVisitor.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2001&#x2013;2013 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
